package cn.lhz.util.string;

import java.time.LocalDate;

/**
 * 身份证工具类
 *
 * @author 李昊哲
 * @version 1.0.0
 */
public class IdCardUtil {
  /**
   * 根据身份证获取性别 1代表男性 0代表女性
   *
   * @param idCard 身份证
   * @return 性别 1代表男性 0代表女性
   */
  public static int getGender(String idCard) {
    if (idCard.length() != 18) {
      throw new RuntimeException("不是正确的身份证格式");
    }
    return Integer.parseInt(idCard.substring(16, 17)) % 2;
  }

  /**
   * 根据身份证获取年龄
   *
   * @param idCard 身份证
   * @return 年龄
   */
  public static int getAge(String idCard) {
    if (idCard.length() != 18) {
      throw new RuntimeException("不是正确的身份证格式");
    }
    LocalDate now = LocalDate.now();
    int year = now.getYear();
    int month = now.getMonthValue();
    int day = now.getDayOfMonth();
    int age = year - Integer.parseInt(idCard.substring(6, 10));
    int m = month - Integer.parseInt(idCard.substring(10, 12));
    int d = day - Integer.parseInt(idCard.substring(12, 14));
    if (m < 0) {
      return age - 1;
    } else if (m > 0) {
      return age;
    } else if (d < 0) {
      return age - 1;
    } else {
      return age;
    }
  }
}
